package studio.negocio;
import java.util.Collection;

import studio.dao.SalaArmadaDAO;
import studio.dao.SalaDao;
import studio.excepcion.DAOExcepcion;
import studio.modelo.Armado;
import studio.modelo.InstBasico;
import studio.modelo.Sala;
import studio.modelo.SalaConfBas;

public class SeguridadArmado 
{
	public void Validar(Armado Obj)
	{
		SalaArmadaDAO daoArmado=new SalaArmadaDAO();
		daoArmado.Verificacion(Obj);	
	}
	
	public String RegistraSalaArmada(Armado arm) throws DAOExcepcion
	{
		String mensaje="";
		SalaArmadaDAO dao=new SalaArmadaDAO();
		int capacidad=0;
		capacidad=arm.getObjSala().getCapacidad();
		//validando capacidad
		int cantidadInt=this.NroIntBasico(arm.getInstbasicos());
		System.out.println("Ingreso "+cantidadInt);
		System.out.println("Configuro "+capacidad);
		if (cantidadInt<=capacidad )
		{
			SalaDao cfgbas=new SalaDao();
			Collection<SalaConfBas> Lst =cfgbas.ListarConfBasica();
			int valor=0;
			for (SalaConfBas salaConfBas : Lst) {
				System.out.println("Recorre "+salaConfBas.getDescripcion());
				
				int cantpermi=0;
				int acum=0;
				cantpermi=salaConfBas.getQtdBas();
				acum=this.ValidarConfigbasica(arm.getInstbasicos(),salaConfBas.getDescripcion());
				System.out.println("solo esto "+acum+ " de "+cantpermi);
				if (acum > cantpermi)
				{
					mensaje="01.-Solo puedes agregar  " + cantpermi + " - "+salaConfBas.getDescripcion();
					//System.out.println("Solo puedes agregar  " + cantpermi + " - "+salaConfBas.getDescripcion());
					valor+=1;
					break;
			//	return;
				}
			}
			System.out.println(" Soy valor "+valor);
			if (valor==0)
			{
				mensaje=dao.insertarSalaArma(arm);	
			}
		}
		else
		{
			mensaje="02.-El nro de instrumentos basicos excede la capacidad de la sala - Maximo de Instrumento "+capacidad;
			//System.out.println("El nro de instrumentos basicos excede la capacidad de la sala - Maximo de Instrumento "+capacidad);
		}
		return mensaje;
	}
	
	private int NroIntBasico(Collection<InstBasico> lstintr)
	{
		System.out.println(lstintr.size());
		
		int acum=0;
		for (InstBasico instBasico : lstintr) {
			System.out.println(instBasico.objTipRecur.getDescripcion());
			if (instBasico.objTipRecur.getDescripcion().equals("Basico"))
			{
				acum+=instBasico.getQtInstBasico();	
				System.out.println(instBasico.getQtInstBasico());
				System.out.println(instBasico.objTipRecur.getDescripcion());
			}
		}
		return acum;	
	}
	
	private int ValidarConfigbasica(Collection<InstBasico> lstintr,String TipInstr)
	{
		System.out.println("Soy una "+TipInstr);
		System.out.println("Soy una "+lstintr.size());
		int acum=0;
		for (InstBasico instBasico : lstintr) {
			System.out.println("Ingrese");
			//System.out.println(instBasico.objTipIntru.getDescripcion());
			//System.out.println(instBasico.getIdInstrumento());
			if ((instBasico.objTipIntru.getDescripcion().equals(TipInstr)) && (instBasico.objTipRecur.getDescripcion().equals("Basico")))
			{
				System.out.println("Soy una "+TipInstr);
				acum+=instBasico.getQtInstBasico();	
			}
		}
		System.out.println("Hasta aqui llego");
		return acum;	
	}
	
	public Armado RetornarSalaArmada(int id) throws DAOExcepcion
	{
		SalaArmadaDAO dao=new SalaArmadaDAO();
		return dao.RetornarSalaArmada(id);
	}
	
	public Collection<Armado> ListaArmadas() throws DAOExcepcion
	{
		SalaArmadaDAO dao=new SalaArmadaDAO();
		return dao.RetornarSalasArmadas();
	}
	
}
